login:        password:      
Combats Scrolls
Rambler's Top100
Гость БК
Profile Friend page
ru
updated 06.03.09 23:14
22-08-07 @ 16:05

Alex Nomad Open user info Open user photogallery
Начинающим клановым программистам. Часть II.
Combats API

Продолжим наше повествование о программировании в БК. Напомним, что в предыдущей части я рассказывал о следующем:
1. Общие принципы создания сервисов для БК
2. Открытые и закрытые страницы БК
3. Пример чтения информации из БК (php, чтение инфы)

Теперь Вы чувствуете в себе силы сделать что-то более значимое и грандиозное? Как я Вам не завидую!
Но слава создателям БК - они предусмотрели Combats API, а значит, некоторые сервисы можно сделать намного быстрее и проще. Введение Combats API первоначально преследовало следующие цели:
1. Снизить нагрузку на сервера БК
2. Обеспечить дополнительный источник поступления средств.

Но как часто бывает, дело не было доведено до конца и теперь мы имеем частичный и бесплатный доступ к БК через Combats API, а именно:
http://angelscity.combats.ru/inf.pl?login=Alex+Nomad&short=1
http://capitalcity.combats.ru/shop.pl?contents=d539mfk2
http://capitalcity.combats.ru/commission.pl?contents=105dfj5kenA24

Первая ссылка – это уже известная страница с короткой информацией о персонаже. Вторая и третья ссылка предоставляют Вам доступ к информации о наличии товаров в магазине и комиссионке. Формат их достаточно простой, сначала идет название раздела, потом идет перечисление товаров в виде gif;name;price;count. Разобрать весь текст при помощи preg_match_all довольно легко.
"Оружие: кастеты,ножи"
knife61;Темный Кинжал;9.00 - 231.00;2
knife200;Battle Knife;16.00 - 200.00;4
knife63;Нож Довольных;7.00 - 5000.00;8
knife56;Кинжал Витой Рукояти;3.00 - 43.00;45


При программировании ресурсов, использующих ссылки доступа к магазину и комиссионке вы столкнетесь со следующими проблемами:
1. При использовании функции file_get_contents() вы наверняка получите ответ «Bad referers» или «Произошла ошибка». Это связано с тем, что эта функция не отправляет в запросе информацию о Referer. Я эту проблему решил запрограммировав доступ на уровне сокетов (см.ниже).
2. Как Вы уже догадались, меняя в запросе capitalcity на любой другой город можно получить информацию со всех городов. Но Emeralds City на этот запрос не ответит. Поэтому чтобы получить информацию из магазина Emeralds City придется зарегистрировать бота, раскачать его до 4 уровня, снабдить визой и отправить в магазин. Именно поэтому во всех картах торговца (за исключением нашей конечно) нет информации о наличии товаров в магазине Emeralds City.

Теперь приведу простой пример как организовать доступ к БК на уровне сокетов. Только не забудьте, что за очень частые запросы Вас также могут забанить. Поскольку ситуация в магазинах и комиссионках меняется медленно, то достаточно одного запроса в 15-20 минут.


function ReadShop ($city) {
.........$fp = @fsockopen("{$city}.combats.ru", 80);
.........if(!$fp) return False;
.........//в строке после Referer поставьте url своего сайта
.........fputs($fp, "GET http://{$city}.combats.ru/shop.pl?contents=d539mfk2 HTTP/1.0\r\nReferer: http://www.ritterclan.org/\r\n\r\n");
.........$buf = "";
.........while(!feof($fp)){
..................$buf .= fread($fp, 1024);
.........}
.........return $buf;
}


Существует еще одна ссылка из Combats API, которая мне не известна. Обратите внимание, что страница о ставках и ходе текущего турнира в Башне Смерти является закрытой ссылкой. При этом клан Mercenaries показывает информацию о турнирах, не имея там бота. Информация достаточно сухая и явно недостаточная, чтобы конкурировать на рынке сервисов для БК. Но факт остается фактом.

В завершение этой части хотелось бы сразу пресечь все рассуждения и негодования о том, что я раскрываю секретную информацию. Когда я начинал программировать для БК мне никто не помогал, никто не делился со мной информацией, все приходилось делать методом проб и ошибок. А ссылки, приведенные в этой статье, можно найти на просторах Интернет. Да и количество карт торговца подсказывает мне, что эта информация неизвестна только ленивому.

Я думаю, что это: Scrolls.multiLike:)

view mode: linear threads
Total disscussion threads: 9 Pages: 1
«« « 1 » »»

Post reply | Post reply with quote
Модификатор Open user info Open user photogallery
22-08-07 @ 16:43
copy link to clipboard
Спасибо, помогло)

В своих, разумеется, целях

А вообще, вам бы лучший дизайн сайта, а ресурсы неплохие
Post reply Ответить с цитированием
Гость БК
22-08-07 @ 17:21
Re:
copy link to clipboard
К сожалению последнего дизайнера пришлось выгнать из клана...
Post reply Ответить с цитированием
Модификатор Open user info Open user photogallery
22-08-07 @ 17:22
Re: Re:
copy link to clipboard
Алекс, ты?

По какой причине?
Post reply Ответить с цитированием
Гость БК
22-08-07 @ 17:44
Re: Re: Re:
copy link to clipboard
Нарушение устава и этики. У нас с этим строго.

Alex Nomad
Post reply Ответить с цитированием
Гость БК
23-08-07 @ 08:41
copy link to clipboard
:)
Post reply Ответить с цитированием
Asm
28-08-07 @ 17:36
copy link to clipboard
полезная статья, спасибо
Post reply Ответить с цитированием
Гость БК
29-08-07 @ 12:08
copy link to clipboard
Огромное спасибо за продолжение, ссылки к своему стыду не знал :(
Post reply Ответить с цитированием
Alex Nomad Open user info Open user photogallery
29-08-07 @ 12:12
Re:
copy link to clipboard
Я сам не знал, пока не обнаружил что карты торговца у всех кланов работают без ботов.
Тогда и начал искать целеноправлено.
Гугл однозначно рулит, если кто-то где-то хоть раз упомянул...
Post reply Ответить с цитированием
Гость БК
02-09-07 @ 00:20
copy link to clipboard
А актуальные параметры БК-шных вещей откуда можно взять?
Будут ли возражать дарки если я использую БД вещей из их переодевалки в своих небольших публичных разработках?
Post reply Ответить с цитированием
Alex Nomad Open user info Open user photogallery
03-09-07 @ 12:33
Re:
copy link to clipboard
Думаю будут, если узнают и увидят.
Обычно парсят библиотеку, комок и магазин. А потом еще ручками добавляют
Post reply Ответить с цитированием
Гость БК
14-09-07 @ 10:27
Re:
copy link to clipboard
http://autocombats.info/modules/Items/items.xml
не все правда, но многое есть )
Post reply Ответить с цитированием
Гость БК
22-09-07 @ 02:14
copy link to clipboard
а как насчет монитора хаотов? вроде тоже не у всех боты есть
Post reply Ответить с цитированием
Alex Nomad Open user info Open user photogallery
24-09-07 @ 13:21
Re:
copy link to clipboard
У всех
Post reply Ответить с цитированием
Soltik Open user info Open user photogallery
10-10-07 @ 12:34
Немного иной подход к скачиванию данных
copy link to clipboard
Посмотрел я на способы добычи данных, file_get_contents(), fsockopen() - конечно хорошо, но ведь есть способы проще и удобнее (имхо).
Привду пример своей функции на основе библиотеки curl:

--------
// в качестве аргументов адрес
// и необязательные дополнительные заголовки


function get_url($url, $headers=null){
// инициализация библиотеки
....$ch = curl_init();
//заполнение параметров
....curl_setopt($ch, CURLOPT_URL, $url); //адрес
....curl_setopt($ch, CURLOPT_HEADER, 0); //не включать в результат заголовки ответа
....//curl_setopt($ch, CURLOPT_PROXY, "192.168.0.1:3129"); //прокся если надо
....curl_setopt($fh, CURLOPT_TIMEOUT, 10); //таймаут соединения в секундах
....curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); //следовать по редиректу
....//curl_setopt($fh, CURLOPT_REFERER, 'http://www.solt.ru/'); //тот самый реферер без которого карты не работают (указывать естественно свой)
....curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //возвращать данные в буфер
....if($headers) //заполнение дополнительных заголовков
........curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//получение данных в буфер
....$buf = curl_exec($ch);
....if($buf=="") //при ошибке возвращать её номер
........$buf = curl_errno($ch);
//финиш
....curl_close ( $ch );
....return $buf;
}
-----------

Ну и пример вызова данной функции:
$info=get_url("http://angelscity.combats.ru/inf.pl?login=Alex+Nomad&short=1");
Post reply Ответить с цитированием
Alex Nomad Open user info Open user photogallery
10-10-07 @ 15:21
copy link to clipboard
Да это достаточно удобный способ.
Вот только curl не у всех стоит.
Post reply Ответить с цитированием
Soltik Open user info Open user photogallery
10-10-07 @ 16:33
Re:
copy link to clipboard
он же стандартный вроде, вот только не помню с какой версии пхп пошел.
Post reply Ответить с цитированием
Alex Nomad Open user info Open user photogallery
11-10-07 @ 12:23
Re: Re:
copy link to clipboard
Для использования функций CURL необходимо установить пакет CURL (http://curl.haxx.se/). Необходимо мспользовать версию CURL 7.0.2-beta или старше, с более младшими версиями PHP не работает. Для PHP 4.2.3 необходимо использовать версию CURL 7.9.0 или старше. Начиная PHP 4.3.0, необходима CURL 7.9.8 или старше. Вероятнее всего, PHP 5.0.0 будет требовать CURL не младше 7.10.5

Для использования CURL необходимо также собрать PHP с опцией --with-curl[=DIR], где DIR - имя директории, содержащей поддиректории lib и include. Директория "include" должна содержать поддиректорию "curl" с файлами easy.h и curl.h. Директория "lib" должна содержать файл libcurl.a. Начиная с PHP 4.3.0 с помощью опции --with-curlwrappers можно сконфигурировать PHP для использования CURL при работе с удаленными файлами.
Post reply Ответить с цитированием
Soltik Open user info Open user photogallery
11-10-07 @ 13:31
Re: Re: Re:
copy link to clipboard
Ну правильно, в версиях >4.3.0 он почти всегда есть.
Post reply Ответить с цитированием
Гость БК
11-10-07 @ 11:40
copy link to clipboard
Вчера обкатал curl. Прекрасная вещь: легко формировать POST/GET запросы, легко получать/отправлять куки; плюс комбинировать все вместе.
В связке с tidy можно преобразовывать полученные HTML-страницы как угодно.
Post reply Ответить с цитированием

Post reply | Post reply with quote

Total disscussion threads: 9 Pages: 1
«« « 1 » »»


 
 © 2007–2025 «combats.com»
  18+  
feedback